{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "提示：当前环境pandas版本为0.25，get_price与get_fundamentals_continuously接口panel参数将固定为False\n",
      "注意：0.25以上版本pandas不支持panel，如使用该数据结构和相关函数请注意修改\n",
      "auth success \n"
     ]
    }
   ],
   "source": [
    "from jqdatasdk import *\n",
    "auth(\"13476183321\",\"183321\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "ename": "Exception",
     "evalue": "您当天的查询条数超过了每日最大查询限制：1000万条；付费可增加流量权限，详情请咨询管理员，微信号：JQData02",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mException\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-5-dbbf5a256ed0>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      4\u001b[0m \u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfilter\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      5\u001b[0m     income.code==\"000001.XSHE\")\n\u001b[1;32m----> 6\u001b[1;33m \u001b[0mdata_pe\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mget_fundamentals_continuously\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mq\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mend_date\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m\"2020-12-29\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mcount\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mpanel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      7\u001b[0m \u001b[0mdata_pe\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mhead\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      8\u001b[0m \u001b[0mtime\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdata_pe\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"day\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtolist\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\jqdatasdk\\utils.py\u001b[0m in \u001b[0;36m_wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m    239\u001b[0m             \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"run jqdatasdk.auth first\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    240\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 241\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    242\u001b[0m     \u001b[1;32mreturn\u001b[0m \u001b[0m_wrapper\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    243\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\jqdatasdk\\utils.py\u001b[0m in \u001b[0;36mhashable_cached_func\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m    275\u001b[0m                 \u001b[1;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mv\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    276\u001b[0m             }\n\u001b[1;32m--> 277\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mcopy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdeepcopy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcached_func\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0m_args\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0m_kwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    278\u001b[0m         \u001b[0mhashable_cached_func\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcache_info\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcached_func\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcache_info\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    279\u001b[0m         \u001b[0mhashable_cached_func\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcache_clear\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcached_func\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcache_clear\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\jqdatasdk\\utils.py\u001b[0m in \u001b[0;36mfunc_with_serialized_params\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m    259\u001b[0m             \u001b[0m_args\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtuple\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mdeserialize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0marg\u001b[0m \u001b[1;32min\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    260\u001b[0m             \u001b[0m_kwargs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m{\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mdeserialize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mv\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mv\u001b[0m \u001b[1;32min\u001b[0m \u001b[0msix\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mviewitems\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 261\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0m_args\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0m_kwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    262\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    263\u001b[0m         \u001b[0mcached_func\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcache\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfunc_with_serialized_params\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\jqdatasdk\\api.py\u001b[0m in \u001b[0;36mget_fundamentals_continuously\u001b[1;34m(query_object, end_date, count, panel)\u001b[0m\n\u001b[0;32m    113\u001b[0m     \u001b[1;32mif\u001b[0m \u001b[0mis_pandas_version_25\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    114\u001b[0m         \u001b[0mpanel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 115\u001b[1;33m     \u001b[0mtrade_days\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mCalendarService\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_trade_days\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mend_date\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mend_date\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcount\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcount\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    116\u001b[0m     \u001b[0msql\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfundamentals_redundant_continuously_query_to_sql\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mquery_object\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtrade_days\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    117\u001b[0m     \u001b[0msql\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mremove_duplicated_tables\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msql\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\jqdatasdk\\calendar_service.py\u001b[0m in \u001b[0;36mget_trade_days\u001b[1;34m(cls, start_date, end_date, count)\u001b[0m\n\u001b[0;32m     18\u001b[0m             \u001b[1;32mreturn\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0md\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0md\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mcls\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_all_trade_days\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mstart_date\u001b[0m \u001b[1;33m<=\u001b[0m \u001b[0md\u001b[0m \u001b[1;33m<=\u001b[0m \u001b[0mend_date\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     19\u001b[0m         \u001b[1;32melif\u001b[0m \u001b[0mcount\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 20\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0md\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0md\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mcls\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_all_trade_days\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0md\u001b[0m \u001b[1;33m<=\u001b[0m \u001b[0mend_date\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m-\u001b[0m\u001b[0mcount\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     21\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     22\u001b[0m             \u001b[1;32mraise\u001b[0m \u001b[0mParamsError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"start_date 参数与 count 参数必须输入一个\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\jqdatasdk\\calendar_service.py\u001b[0m in \u001b[0;36mget_all_trade_days\u001b[1;34m(cls)\u001b[0m\n\u001b[0;32m     26\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mcls\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mall_trade_days\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     27\u001b[0m             \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mapi\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mget_all_trade_days\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 28\u001b[1;33m             \u001b[0mdata\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mget_all_trade_days\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     29\u001b[0m             \u001b[0mcls\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mall_trade_days\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlist\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     30\u001b[0m         \u001b[1;32mreturn\u001b[0m \u001b[0mcls\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mall_trade_days\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\jqdatasdk\\utils.py\u001b[0m in \u001b[0;36m_wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m    239\u001b[0m             \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"run jqdatasdk.auth first\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    240\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 241\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    242\u001b[0m     \u001b[1;32mreturn\u001b[0m \u001b[0m_wrapper\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    243\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\jqdatasdk\\utils.py\u001b[0m in \u001b[0;36mhashable_cached_func\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m    275\u001b[0m                 \u001b[1;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mv\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    276\u001b[0m             }\n\u001b[1;32m--> 277\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mcopy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdeepcopy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcached_func\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0m_args\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0m_kwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    278\u001b[0m         \u001b[0mhashable_cached_func\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcache_info\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcached_func\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcache_info\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    279\u001b[0m         \u001b[0mhashable_cached_func\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcache_clear\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcached_func\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcache_clear\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\jqdatasdk\\utils.py\u001b[0m in \u001b[0;36mfunc_with_serialized_params\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m    259\u001b[0m             \u001b[0m_args\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtuple\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mdeserialize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0marg\u001b[0m \u001b[1;32min\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    260\u001b[0m             \u001b[0m_kwargs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m{\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mdeserialize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mv\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mv\u001b[0m \u001b[1;32min\u001b[0m \u001b[0msix\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mviewitems\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 261\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0m_args\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0m_kwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    262\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    263\u001b[0m         \u001b[0mcached_func\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcache\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfunc_with_serialized_params\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\jqdatasdk\\api.py\u001b[0m in \u001b[0;36mget_all_trade_days\u001b[1;34m()\u001b[0m\n\u001b[0;32m    287\u001b[0m     \u001b[1;33m:\u001b[0m\u001b[1;32mreturn\u001b[0m \u001b[0m包含所有交易日的\u001b[0m \u001b[0mnumpy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mndarray\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0m每个元素为一个\u001b[0m \u001b[0mdatetime\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdate\u001b[0m \u001b[0m类型\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    288\u001b[0m     \"\"\"\n\u001b[1;32m--> 289\u001b[1;33m     \u001b[0mdata\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mJQDataClient\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_all_trade_days\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    290\u001b[0m     \u001b[1;32mif\u001b[0m \u001b[0mstr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdtype\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[1;34m\"object\"\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    291\u001b[0m         \u001b[0mdata\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdatetime\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdatetime\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\jqdatasdk\\client.py\u001b[0m in \u001b[0;36m<lambda>\u001b[1;34m(**kwargs)\u001b[0m\n\u001b[0;32m    219\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    220\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__getattr__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 221\u001b[1;33m         \u001b[1;32mreturn\u001b[0m \u001b[1;32mlambda\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    222\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    223\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mget_data_api_url\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\jqdatasdk\\client.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self, method, **kwargs)\u001b[0m\n\u001b[0;32m    214\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    215\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0merr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mException\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 216\u001b[1;33m                 \u001b[1;32mraise\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    217\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    218\u001b[0m         \u001b[1;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mException\u001b[0m: 您当天的查询条数超过了每日最大查询限制：1000万条；付费可增加流量权限，详情请咨询管理员，微信号：JQData02"
     ]
    }
   ],
   "source": [
    "#获取日期\n",
    "q = query(\n",
    "    valuation\n",
    ").filter(\n",
    "    income.code==\"000001.XSHE\")\n",
    "data_pe = get_fundamentals_continuously(q, end_date=\"2020-12-29\",count=5,panel=False)\n",
    "data_pe.head()\n",
    "time = data_pe[\"day\"].tolist()\n",
    "time "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0      2016-11-23\n",
       "1      2016-11-24\n",
       "2      2016-11-25\n",
       "3      2016-11-28\n",
       "4      2016-11-29\n",
       "          ...    \n",
       "995    2020-12-23\n",
       "996    2020-12-24\n",
       "997    2020-12-25\n",
       "998    2020-12-28\n",
       "999    2020-12-29\n",
       "Name: day, Length: 1000, dtype: object"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# data_pe[\"day\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['000001.XSHE', '000002.XSHE', '000004.XSHE', '000005.XSHE',\n",
       "       '000006.XSHE', '000007.XSHE', '000008.XSHE', '000009.XSHE',\n",
       "       '000010.XSHE', '000011.XSHE',\n",
       "       ...\n",
       "       '688658.XSHG', '688668.XSHG', '688678.XSHG', '688679.XSHG',\n",
       "       '688698.XSHG', '688699.XSHG', '688777.XSHG', '688788.XSHG',\n",
       "       '688981.XSHG', '689009.XSHG'],\n",
       "      dtype='object', length=4241)"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 获取所有标的信息\n",
    "data_index = get_all_securities().index\n",
    "data_index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 计算中位数\n",
    "def get_median(data):\n",
    "    data.sort()\n",
    "    half = len(data) // 2\n",
    "    return (data[half] + data[~half]) / 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[55.1104,\n",
       " 54.5429,\n",
       " 54.40655,\n",
       " 54.34585,\n",
       " 54.0216,\n",
       " 53.70585,\n",
       " 53.9919,\n",
       " 52.7931,\n",
       " 52.9699,\n",
       " 53.10525,\n",
       " 53.5546,\n",
       " 53.0315,\n",
       " 52.6961,\n",
       " 49.93875,\n",
       " 50.1244,\n",
       " 49.6993,\n",
       " 50.35955,\n",
       " 51.003,\n",
       " 50.9094,\n",
       " 50.7404,\n",
       " 51.2648,\n",
       " 51.2585,\n",
       " 50.6917,\n",
       " 50.8354,\n",
       " 51.0527,\n",
       " 50.8878,\n",
       " 50.7138,\n",
       " 50.8773,\n",
       " 51.3714,\n",
       " 52.0868,\n",
       " 51.8697,\n",
       " 51.20395,\n",
       " 51.4928,\n",
       " 50.9186,\n",
       " 50.466750000000005,\n",
       " 49.87515,\n",
       " 49.2059,\n",
       " 47.0695,\n",
       " 47.73165,\n",
       " 47.5206,\n",
       " 47.12035,\n",
       " 47.786,\n",
       " 48.30525,\n",
       " 48.26835,\n",
       " 48.54600000000001,\n",
       " 48.817949999999996,\n",
       " 48.69795,\n",
       " 49.56515,\n",
       " 49.8059,\n",
       " 50.09265,\n",
       " 50.5065,\n",
       " 50.241749999999996,\n",
       " 50.633,\n",
       " 50.7913,\n",
       " 50.3143,\n",
       " 50.4823,\n",
       " 50.3136,\n",
       " 50.54835,\n",
       " 51.2724,\n",
       " 51.72,\n",
       " 51.6628,\n",
       " 51.8228,\n",
       " 51.5948,\n",
       " 52.54435,\n",
       " 52.8858,\n",
       " 52.73415,\n",
       " 53.049350000000004,\n",
       " 53.67285,\n",
       " 54.10105,\n",
       " 53.8699,\n",
       " 53.3967,\n",
       " 53.3475,\n",
       " 54.0465,\n",
       " 53.87935,\n",
       " 53.99235,\n",
       " 54.9723,\n",
       " 54.6183,\n",
       " 54.8853,\n",
       " 55.0058,\n",
       " 55.0398,\n",
       " 55.1665,\n",
       " 55.035849999999996,\n",
       " 54.9385,\n",
       " 54.69745,\n",
       " 54.7339,\n",
       " 53.6338,\n",
       " 54.15605,\n",
       " 55.1229,\n",
       " 55.6305,\n",
       " 55.6066,\n",
       " 54.637299999999996,\n",
       " 55.3239,\n",
       " 54.3374,\n",
       " 54.50575,\n",
       " 53.8207,\n",
       " 52.73055,\n",
       " 52.678999999999995,\n",
       " 52.2078,\n",
       " 51.6763,\n",
       " 51.451899999999995,\n",
       " 49.587149999999994,\n",
       " 49.4079,\n",
       " 49.21025,\n",
       " 49.394149999999996,\n",
       " 49.29205,\n",
       " 48.626999999999995,\n",
       " 48.4711,\n",
       " 48.22325,\n",
       " 47.691,\n",
       " 46.7684,\n",
       " 47.327200000000005,\n",
       " 46.4619,\n",
       " 46.1861,\n",
       " 46.0342,\n",
       " 46.1052,\n",
       " 46.9915,\n",
       " 47.381150000000005,\n",
       " 46.98285,\n",
       " 46.64015,\n",
       " 45.3446,\n",
       " 43.9283,\n",
       " 44.28830000000001,\n",
       " 44.5941,\n",
       " 44.7837,\n",
       " 44.4183,\n",
       " 42.94325,\n",
       " 43.7959,\n",
       " 44.04275,\n",
       " 44.198,\n",
       " 45.3203,\n",
       " 45.3619,\n",
       " 45.391999999999996,\n",
       " 44.4114,\n",
       " 45.38665,\n",
       " 45.6275,\n",
       " 46.209450000000004,\n",
       " 46.05775,\n",
       " 46.3685,\n",
       " 46.2973,\n",
       " 46.4637,\n",
       " 45.293549999999996,\n",
       " 45.42855,\n",
       " 46.1108,\n",
       " 46.1006,\n",
       " 45.736900000000006,\n",
       " 45.8583,\n",
       " 46.01755,\n",
       " 46.412800000000004,\n",
       " 46.3368,\n",
       " 46.9807,\n",
       " 46.9858,\n",
       " 47.3224,\n",
       " 46.5667,\n",
       " 45.7507,\n",
       " 45.7866,\n",
       " 45.8286,\n",
       " 45.38465,\n",
       " 42.492850000000004,\n",
       " 42.763999999999996,\n",
       " 43.1156,\n",
       " 43.17645,\n",
       " 43.1326,\n",
       " 43.4239,\n",
       " 43.2803,\n",
       " 43.3365,\n",
       " 44.0934,\n",
       " 43.862,\n",
       " 43.9471,\n",
       " 44.1564,\n",
       " 43.5193,\n",
       " 43.5139,\n",
       " 43.2991,\n",
       " 43.54215,\n",
       " 43.5321,\n",
       " 43.5475,\n",
       " 42.8836,\n",
       " 42.3771,\n",
       " 43.3517,\n",
       " 43.6072,\n",
       " 44.06265,\n",
       " 44.38685,\n",
       " 44.08085,\n",
       " 44.1168,\n",
       " 43.811499999999995,\n",
       " 43.5449,\n",
       " 43.3086,\n",
       " 43.753550000000004,\n",
       " 44.3158,\n",
       " 43.953450000000004,\n",
       " 43.93105,\n",
       " 44.4438,\n",
       " 44.5256,\n",
       " 44.452349999999996,\n",
       " 44.593,\n",
       " 44.78675,\n",
       " 44.5471,\n",
       " 44.6531,\n",
       " 45.0975,\n",
       " 44.7258,\n",
       " 44.7885,\n",
       " 44.8293,\n",
       " 44.5961,\n",
       " 44.9178,\n",
       " 44.8099,\n",
       " 45.17535,\n",
       " 44.84435,\n",
       " 44.9941,\n",
       " 44.423,\n",
       " 43.9805,\n",
       " 44.38885,\n",
       " 44.3675,\n",
       " 44.670100000000005,\n",
       " 45.3321,\n",
       " 45.9657,\n",
       " 45.7832,\n",
       " 45.8143,\n",
       " 46.16545,\n",
       " 45.1686,\n",
       " 45.35795,\n",
       " 44.61,\n",
       " 44.0622,\n",
       " 44.7768,\n",
       " 44.899950000000004,\n",
       " 44.7754,\n",
       " 44.8085,\n",
       " 44.656000000000006,\n",
       " 44.218999999999994,\n",
       " 42.66215,\n",
       " 42.756,\n",
       " 42.83865,\n",
       " 42.4858,\n",
       " 42.22175,\n",
       " 42.5949,\n",
       " 42.7984,\n",
       " 43.164699999999996,\n",
       " 43.33235,\n",
       " 43.51445,\n",
       " 43.48695,\n",
       " 42.9214,\n",
       " 42.568200000000004,\n",
       " 42.2304,\n",
       " 40.605,\n",
       " 40.8381,\n",
       " 40.6926,\n",
       " 40.628,\n",
       " 39.6883,\n",
       " 39.6741,\n",
       " 39.1199,\n",
       " 39.6703,\n",
       " 39.64405,\n",
       " 39.3291,\n",
       " 39.8688,\n",
       " 38.9795,\n",
       " 37.9881,\n",
       " 38.5335,\n",
       " 38.3348,\n",
       " 38.7847,\n",
       " 39.1512,\n",
       " 38.5388,\n",
       " 38.8917,\n",
       " 39.0974,\n",
       " 38.9468,\n",
       " 38.8937,\n",
       " 39.0634,\n",
       " 38.6007,\n",
       " 38.73055,\n",
       " 38.62155,\n",
       " 38.25035,\n",
       " 38.70285,\n",
       " 38.53515,\n",
       " 38.809200000000004,\n",
       " 38.91825,\n",
       " 39.251400000000004,\n",
       " 39.5347,\n",
       " 39.6573,\n",
       " 39.46275,\n",
       " 39.7976,\n",
       " 39.8773,\n",
       " 39.7015,\n",
       " 40.001999999999995,\n",
       " 39.729,\n",
       " 38.57755,\n",
       " 38.933,\n",
       " 39.1425,\n",
       " 39.1166,\n",
       " 38.926,\n",
       " 39.0998,\n",
       " 39.1071,\n",
       " 39.6536,\n",
       " 39.555350000000004,\n",
       " 39.4083,\n",
       " 38.833200000000005,\n",
       " 38.7655,\n",
       " 37.6793,\n",
       " 36.2363,\n",
       " 35.6984,\n",
       " 35.3228,\n",
       " 33.3629,\n",
       " 33.7043,\n",
       " 34.1548,\n",
       " 33.2458,\n",
       " 34.0912,\n",
       " 34.015550000000005,\n",
       " 34.14815,\n",
       " 34.66674999999999,\n",
       " 34.9414,\n",
       " 35.90035,\n",
       " 35.8857,\n",
       " 36.0926,\n",
       " 36.5863,\n",
       " 36.3497,\n",
       " 36.7548,\n",
       " 37.1699,\n",
       " 36.909,\n",
       " 37.2554,\n",
       " 37.9253,\n",
       " 38.6104,\n",
       " 38.495,\n",
       " 38.0553,\n",
       " 37.5683,\n",
       " 37.554,\n",
       " 37.8654,\n",
       " 37.9373,\n",
       " 37.8286,\n",
       " 37.8533,\n",
       " 35.9124,\n",
       " 36.6309,\n",
       " 37.7926,\n",
       " 37.6648,\n",
       " 37.8882,\n",
       " 38.7354,\n",
       " 38.95305,\n",
       " 38.8748,\n",
       " 38.5527,\n",
       " 38.8841,\n",
       " 38.94265,\n",
       " 39.22255,\n",
       " 39.3517,\n",
       " 39.0503,\n",
       " 38.7938,\n",
       " 38.00455,\n",
       " 38.2875,\n",
       " 38.412,\n",
       " 37.35355,\n",
       " 36.8691,\n",
       " 37.557050000000004,\n",
       " 37.702,\n",
       " 36.1951,\n",
       " 36.2194,\n",
       " 35.7517,\n",
       " 36.1951,\n",
       " 36.1815,\n",
       " 36.9493,\n",
       " 37.1632,\n",
       " 37.1716,\n",
       " 37.48035,\n",
       " 36.8417,\n",
       " 36.6443,\n",
       " 37.185649999999995,\n",
       " 37.0105,\n",
       " 36.828,\n",
       " 37.09395,\n",
       " 37.67235,\n",
       " 38.0261,\n",
       " 37.5767,\n",
       " 37.4057,\n",
       " 37.1117,\n",
       " 36.6276,\n",
       " 36.4459,\n",
       " 34.9091,\n",
       " 35.6939,\n",
       " 35.3057,\n",
       " 35.1879,\n",
       " 35.8874,\n",
       " 35.9483,\n",
       " 35.6448,\n",
       " 35.0899,\n",
       " 34.7011,\n",
       " 35.1366,\n",
       " 34.38035,\n",
       " 34.2173,\n",
       " 33.3891,\n",
       " 30.81915,\n",
       " 31.2467,\n",
       " 30.4322,\n",
       " 30.97295,\n",
       " 30.7951,\n",
       " 31.1338,\n",
       " 30.8172,\n",
       " 30.37275,\n",
       " 31.44395,\n",
       " 30.870849999999997,\n",
       " 31.3017,\n",
       " 30.8159,\n",
       " 29.9473,\n",
       " 29.9987,\n",
       " 30.6947,\n",
       " 31.0165,\n",
       " 30.2837,\n",
       " 31.1629,\n",
       " 31.3995,\n",
       " 31.2192,\n",
       " 31.183000000000003,\n",
       " 31.208,\n",
       " 30.8074,\n",
       " 31.1918,\n",
       " 31.3654,\n",
       " 31.7974,\n",
       " 31.8328,\n",
       " 31.5528,\n",
       " 31.6234,\n",
       " 31.2068,\n",
       " 31.1258,\n",
       " 30.56305,\n",
       " 29.6759,\n",
       " 29.3537,\n",
       " 28.675,\n",
       " 29.4428,\n",
       " 28.7857,\n",
       " 29.5453,\n",
       " 29.777250000000002,\n",
       " 29.8375,\n",
       " 29.74125,\n",
       " 28.978099999999998,\n",
       " 28.720799999999997,\n",
       " 28.156100000000002,\n",
       " 28.2638,\n",
       " 28.6385,\n",
       " 28.19615,\n",
       " 28.2048,\n",
       " 28.173299999999998,\n",
       " 28.5835,\n",
       " 28.4017,\n",
       " 28.0348,\n",
       " 27.3496,\n",
       " 26.906950000000002,\n",
       " 26.8344,\n",
       " 27.2515,\n",
       " 26.794,\n",
       " 26.6509,\n",
       " 26.7881,\n",
       " 26.1261,\n",
       " 26.23155,\n",
       " 26.3108,\n",
       " 26.4955,\n",
       " 26.2501,\n",
       " 25.71065,\n",
       " 26.2252,\n",
       " 26.5679,\n",
       " 26.466549999999998,\n",
       " 26.847700000000003,\n",
       " 26.8237,\n",
       " 26.784000000000002,\n",
       " 26.349,\n",
       " 26.6669,\n",
       " 25.7599,\n",
       " 25.8157,\n",
       " 25.7426,\n",
       " 23.9374,\n",
       " 23.7563,\n",
       " 23.4998,\n",
       " 23.0952,\n",
       " 23.305,\n",
       " 22.5439,\n",
       " 23.02445,\n",
       " 24.00845,\n",
       " 23.6449,\n",
       " 23.6885,\n",
       " 23.3952,\n",
       " 23.30625,\n",
       " 22.8189,\n",
       " 23.1002,\n",
       " 23.19435,\n",
       " 23.28905,\n",
       " 23.9588,\n",
       " 24.06165,\n",
       " 23.9226,\n",
       " 23.9153,\n",
       " 23.783,\n",
       " 23.7461,\n",
       " 24.54555,\n",
       " 25.0995,\n",
       " 25.021900000000002,\n",
       " 25.4456,\n",
       " 25.5379,\n",
       " 25.62625,\n",
       " 24.933799999999998,\n",
       " 25.1115,\n",
       " 25.18995,\n",
       " 24.1397,\n",
       " 23.96985,\n",
       " 24.1851,\n",
       " 24.4483,\n",
       " 23.9762,\n",
       " 24.21015,\n",
       " 25.060200000000002,\n",
       " 25.245350000000002,\n",
       " 24.9866,\n",
       " 24.4647,\n",
       " 24.5152,\n",
       " 24.2346,\n",
       " 24.4912,\n",
       " 24.4631,\n",
       " 24.750999999999998,\n",
       " 24.22245,\n",
       " 24.17185,\n",
       " 24.02775,\n",
       " 23.78545,\n",
       " 23.9462,\n",
       " 23.759999999999998,\n",
       " 23.9916,\n",
       " 23.7738,\n",
       " 23.7508,\n",
       " 23.41005,\n",
       " 23.3323,\n",
       " 23.2442,\n",
       " 23.1355,\n",
       " 23.8137,\n",
       " 24.2421,\n",
       " 24.1689,\n",
       " 24.2202,\n",
       " 24.2409,\n",
       " 24.4204,\n",
       " 24.2932,\n",
       " 24.6025,\n",
       " 24.630250000000004,\n",
       " 24.3401,\n",
       " 24.4222,\n",
       " 24.646549999999998,\n",
       " 24.4446,\n",
       " 24.4455,\n",
       " 24.606299999999997,\n",
       " 24.2568,\n",
       " 24.134349999999998,\n",
       " 23.6884,\n",
       " 23.39055,\n",
       " 22.98605,\n",
       " 23.682,\n",
       " 24.3267,\n",
       " 24.6167,\n",
       " 25.0617,\n",
       " 25.1298,\n",
       " 25.13425,\n",
       " 25.8725,\n",
       " 25.8269,\n",
       " 25.7966,\n",
       " 25.4568,\n",
       " 25.916,\n",
       " 27.0929,\n",
       " 27.1984,\n",
       " 27.41515,\n",
       " 28.2394,\n",
       " 28.403000000000002,\n",
       " 28.7817,\n",
       " 29.6028,\n",
       " 30.1149,\n",
       " 30.6957,\n",
       " 29.4285,\n",
       " 30.727249999999998,\n",
       " 31.31995,\n",
       " 30.6478,\n",
       " 29.6198,\n",
       " 30.28155,\n",
       " 30.95955,\n",
       " 31.0162,\n",
       " 31.0728,\n",
       " 31.5538,\n",
       " 31.48745,\n",
       " 31.2524,\n",
       " 30.6307,\n",
       " 30.7185,\n",
       " 30.597700000000003,\n",
       " 31.5322,\n",
       " 32.6218,\n",
       " 32.6794,\n",
       " 32.98185,\n",
       " 33.04195,\n",
       " 32.68625,\n",
       " 32.8677,\n",
       " 33.00365,\n",
       " 32.199349999999995,\n",
       " 32.1638,\n",
       " 32.1322,\n",
       " 32.77775,\n",
       " 32.97795,\n",
       " 32.8876,\n",
       " 32.9991,\n",
       " 32.4752,\n",
       " 31.8322,\n",
       " 32.227599999999995,\n",
       " 30.9863,\n",
       " 30.496650000000002,\n",
       " 28.9624,\n",
       " 28.9203,\n",
       " 26.8432,\n",
       " 27.3006,\n",
       " 27.2987,\n",
       " 26.9479,\n",
       " 27.89865,\n",
       " 27.8512,\n",
       " 27.534750000000003,\n",
       " 28.3248,\n",
       " 28.4909,\n",
       " 27.43825,\n",
       " 27.1311,\n",
       " 27.6713,\n",
       " 27.5164,\n",
       " 26.8825,\n",
       " 26.865949999999998,\n",
       " 27.415599999999998,\n",
       " 27.36165,\n",
       " 27.483150000000002,\n",
       " 27.31015,\n",
       " 27.4662,\n",
       " 27.0526,\n",
       " 26.6077,\n",
       " 26.6046,\n",
       " 26.00235,\n",
       " 26.2793,\n",
       " 27.1127,\n",
       " 26.93575,\n",
       " 27.15485,\n",
       " 26.6285,\n",
       " 26.548000000000002,\n",
       " 26.47765,\n",
       " 26.9213,\n",
       " 27.36865,\n",
       " 27.9656,\n",
       " 27.8757,\n",
       " 27.6762,\n",
       " 27.5914,\n",
       " 27.709,\n",
       " 27.3699,\n",
       " 28.1697,\n",
       " 28.1856,\n",
       " 28.10955,\n",
       " 27.8151,\n",
       " 28.1289,\n",
       " 27.05095,\n",
       " 27.191650000000003,\n",
       " 26.92195,\n",
       " 27.0644,\n",
       " 27.3185,\n",
       " 27.5856,\n",
       " 27.7006,\n",
       " 27.6485,\n",
       " 26.97735,\n",
       " 27.243000000000002,\n",
       " 26.6954,\n",
       " 26.9603,\n",
       " 27.1624,\n",
       " 27.24705,\n",
       " 27.30155,\n",
       " 27.3873,\n",
       " 27.4872,\n",
       " 27.19775,\n",
       " 27.10935,\n",
       " 26.6705,\n",
       " 26.35135,\n",
       " 25.5839,\n",
       " 25.586,\n",
       " 25.7698,\n",
       " 25.3462,\n",
       " 25.7158,\n",
       " 25.43685,\n",
       " 25.6931,\n",
       " 25.6811,\n",
       " 25.8949,\n",
       " 26.4771,\n",
       " 26.4386,\n",
       " 26.3661,\n",
       " 26.4043,\n",
       " 26.242800000000003,\n",
       " 26.1031,\n",
       " 26.2701,\n",
       " 26.2681,\n",
       " 26.0163,\n",
       " 25.4514,\n",
       " 25.9177,\n",
       " 25.9781,\n",
       " 26.1332,\n",
       " 26.31785,\n",
       " 9.5332,\n",
       " 27.22035,\n",
       " 27.456400000000002,\n",
       " 27.25065,\n",
       " 27.4239,\n",
       " 27.4799,\n",
       " 26.9248,\n",
       " 26.9627,\n",
       " 27.3997,\n",
       " 27.294449999999998,\n",
       " 26.99295,\n",
       " 27.15715,\n",
       " 26.80115,\n",
       " 26.11545,\n",
       " 26.398000000000003,\n",
       " 26.25355,\n",
       " 26.25405,\n",
       " 26.51965,\n",
       " 26.8994,\n",
       " 26.919,\n",
       " 27.293000000000003,\n",
       " 26.966749999999998,\n",
       " 26.8529,\n",
       " 26.8666,\n",
       " 26.487499999999997,\n",
       " 26.3422,\n",
       " 26.52355,\n",
       " 26.219250000000002,\n",
       " 26.3791,\n",
       " 26.386049999999997,\n",
       " 26.7217,\n",
       " 25.8445,\n",
       " 25.3776,\n",
       " 24.8965,\n",
       " 25.1258,\n",
       " 25.2135,\n",
       " 25.2987,\n",
       " 25.0856,\n",
       " 25.31795,\n",
       " 25.1004,\n",
       " 24.466700000000003,\n",
       " 24.619100000000003,\n",
       " 24.65755,\n",
       " 24.7706,\n",
       " 24.3817,\n",
       " 24.68365,\n",
       " 25.012700000000002,\n",
       " 24.8844,\n",
       " 24.993000000000002,\n",
       " 24.698,\n",
       " 24.6293,\n",
       " 24.6325,\n",
       " 24.542749999999998,\n",
       " 24.4601,\n",
       " 24.4128,\n",
       " 24.5508,\n",
       " 24.6381,\n",
       " 24.681800000000003,\n",
       " 25.0,\n",
       " 25.04805,\n",
       " 25.073700000000002,\n",
       " 25.0787,\n",
       " 25.0933,\n",
       " 24.9284,\n",
       " 25.29865,\n",
       " 25.749850000000002,\n",
       " 25.990850000000002,\n",
       " 26.007600000000004,\n",
       " 26.30255,\n",
       " 26.0732,\n",
       " 25.6264,\n",
       " 26.0274,\n",
       " 26.1463,\n",
       " 26.39195,\n",
       " 26.2729,\n",
       " 26.5748,\n",
       " 26.6503,\n",
       " 26.990299999999998,\n",
       " 27.0694,\n",
       " 12.048,\n",
       " 27.928400000000003,\n",
       " 27.58395,\n",
       " 27.8351,\n",
       " 27.756999999999998,\n",
       " 28.2262,\n",
       " 28.087699999999998,\n",
       " 28.0784,\n",
       " 28.051949999999998,\n",
       " 27.9287,\n",
       " 28.17405,\n",
       " 27.895,\n",
       " 27.8594,\n",
       " 27.0681,\n",
       " 24.5616,\n",
       " 24.4688,\n",
       " 25.1244,\n",
       " 25.6275,\n",
       " 26.15935,\n",
       " 26.3802,\n",
       " 26.3248,\n",
       " 26.6704,\n",
       " 26.441,\n",
       " 26.445999999999998,\n",
       " 27.38955,\n",
       " 27.8336,\n",
       " 27.70675,\n",
       " 28.39265,\n",
       " 28.5721,\n",
       " 28.8769,\n",
       " 28.9147,\n",
       " 28.51995,\n",
       " 29.0117,\n",
       " 27.7494,\n",
       " 29.3355,\n",
       " 29.6021,\n",
       " 30.1495,\n",
       " 30.66785,\n",
       " 30.6506,\n",
       " 29.515,\n",
       " 30.1841,\n",
       " 29.84565,\n",
       " 29.1723,\n",
       " 28.8595,\n",
       " 27.6595,\n",
       " 27.72045,\n",
       " 27.1426,\n",
       " 27.2747,\n",
       " 27.7622,\n",
       " 26.7549,\n",
       " 27.4379,\n",
       " 27.8927,\n",
       " 27.67785,\n",
       " 27.7422,\n",
       " 27.1514,\n",
       " 27.47345,\n",
       " 27.326050000000002,\n",
       " 28.0244,\n",
       " 27.918000000000003,\n",
       " 28.7908,\n",
       " 28.7854,\n",
       " 29.1174,\n",
       " 28.2118,\n",
       " 27.98905,\n",
       " 28.617449999999998,\n",
       " 28.704900000000002,\n",
       " 28.7321,\n",
       " 28.8808,\n",
       " 29.4202,\n",
       " 29.313650000000003,\n",
       " 29.53255,\n",
       " 29.576349999999998,\n",
       " 29.1619,\n",
       " 29.18405,\n",
       " 28.2438,\n",
       " 28.2166,\n",
       " 28.4887,\n",
       " 28.7912,\n",
       " 28.8491,\n",
       " 29.24335,\n",
       " 29.2421,\n",
       " 29.287599999999998,\n",
       " 29.298499999999997,\n",
       " 29.17205,\n",
       " 29.2424,\n",
       " 29.18545,\n",
       " 29.5347,\n",
       " 29.319850000000002,\n",
       " 29.25,\n",
       " 28.567050000000002,\n",
       " 28.70165,\n",
       " 29.2974,\n",
       " 29.3834,\n",
       " 28.9135,\n",
       " 29.206999999999997,\n",
       " 29.89445,\n",
       " 30.161099999999998,\n",
       " 30.0184,\n",
       " 30.09375,\n",
       " 29.9446,\n",
       " 29.9262,\n",
       " 30.13915,\n",
       " 30.09685,\n",
       " 30.0208,\n",
       " 29.9936,\n",
       " 29.936,\n",
       " 30.5425,\n",
       " 30.7193,\n",
       " 30.4819,\n",
       " 30.7295,\n",
       " 30.7384,\n",
       " 30.544,\n",
       " 30.43395,\n",
       " 30.349899999999998,\n",
       " 30.8497,\n",
       " 31.08625,\n",
       " 31.4085,\n",
       " 31.785999999999998,\n",
       " 32.9757,\n",
       " 33.3273,\n",
       " 34.0137,\n",
       " 34.8163,\n",
       " 34.4719,\n",
       " 35.5505,\n",
       " 35.48015,\n",
       " 34.7877,\n",
       " 33.14575000000001,\n",
       " 33.2778,\n",
       " 34.5973,\n",
       " 34.9119,\n",
       " 35.0756,\n",
       " 34.9768,\n",
       " 33.4984,\n",
       " 33.2993,\n",
       " 33.52335,\n",
       " 34.6072,\n",
       " 34.4657,\n",
       " 34.837149999999994,\n",
       " 35.8632,\n",
       " 35.81765,\n",
       " 36.32215,\n",
       " 36.27615,\n",
       " 35.776650000000004,\n",
       " 36.0476,\n",
       " 35.1536,\n",
       " 34.90685,\n",
       " 35.2204,\n",
       " 35.3799,\n",
       " 36.0725,\n",
       " 36.3217,\n",
       " 35.6078,\n",
       " 35.3165,\n",
       " 35.5287,\n",
       " 36.0411,\n",
       " 35.8756,\n",
       " 34.740700000000004,\n",
       " 34.74535,\n",
       " 34.41795,\n",
       " 33.9421,\n",
       " 34.3436,\n",
       " 34.488600000000005,\n",
       " 34.048950000000005,\n",
       " 34.0081,\n",
       " 33.463,\n",
       " 33.76495,\n",
       " 32.8058,\n",
       " 31.7652,\n",
       " 32.1623,\n",
       " 32.6513,\n",
       " 32.77455,\n",
       " 32.442099999999996,\n",
       " 32.796949999999995,\n",
       " 33.2243,\n",
       " 33.1667,\n",
       " 32.9535,\n",
       " 33.2074,\n",
       " 32.3513,\n",
       " 32.1778,\n",
       " 31.57265,\n",
       " 31.9187,\n",
       " 31.7751,\n",
       " 32.8541,\n",
       " 33.79155,\n",
       " 33.8769,\n",
       " 33.81,\n",
       " 33.5156,\n",
       " 33.6038,\n",
       " 33.3175,\n",
       " 33.5697,\n",
       " 33.2307,\n",
       " 33.1477,\n",
       " 32.6713,\n",
       " 32.3341,\n",
       " 32.03305,\n",
       " 31.697,\n",
       " 31.0455,\n",
       " 29.8632,\n",
       " 29.79025,\n",
       " 30.27995,\n",
       " 30.30465,\n",
       " 30.6312,\n",
       " 30.41365,\n",
       " 31.1904,\n",
       " 30.8754,\n",
       " 30.5922,\n",
       " 30.4982,\n",
       " 30.4686,\n",
       " 30.9354,\n",
       " 30.77335,\n",
       " 30.8498,\n",
       " 30.8035,\n",
       " 31.0455,\n",
       " 31.2566,\n",
       " 31.131050000000002,\n",
       " 30.7972,\n",
       " 30.58605,\n",
       " 30.5582,\n",
       " 30.5262,\n",
       " 30.86605,\n",
       " 31.023400000000002,\n",
       " 30.904049999999998,\n",
       " 31.000500000000002,\n",
       " 30.8507,\n",
       " 30.743650000000002,\n",
       " 30.1489,\n",
       " 30.2777,\n",
       " 29.65815,\n",
       " 29.7998,\n",
       " 29.8547,\n",
       " 29.515050000000002,\n",
       " 29.8343,\n",
       " 29.777,\n",
       " 30.1999,\n",
       " 29.453899999999997,\n",
       " 29.655099999999997,\n",
       " 28.917099999999998,\n",
       " 29.1533,\n",
       " 28.8011,\n",
       " 28.88325]"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 获取PE值信息\n",
    "q = query(\n",
    "    valuation\n",
    ").filter(\n",
    "    valuation.code.in_ (list(data_index)) \n",
    ")\n",
    "\n",
    "# 计算PE中位数\n",
    "pe_list = []\n",
    "for i in range(1000):\n",
    "    \n",
    "    df = get_fundamentals(q, data_pe[\"day\"].tolist()[i])\n",
    "    df.to_excle(\"data.xlxs\")\n",
    "    pe_list.append(get_median(df[\"pe_ratio\"].tolist()))\n",
    "\n",
    "pe_list   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "ename": "TTransportException",
     "evalue": "TTransportException(type=1, message=\"Could not connect to ('39.107.190.114', 7000)\")",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mOSError\u001b[0m                                   Traceback (most recent call last)",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\thriftpy2\\transport\\socket.py\u001b[0m in \u001b[0;36mopen\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m     95\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 96\u001b[1;33m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msock\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0maddr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     97\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mOSError\u001b[0m: [WinError 10065] 套接字操作尝试一个无法连接的主机。",
      "\nDuring handling of the above exception, another exception occurred:\n",
      "\u001b[1;31mTTransportException\u001b[0m                       Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-87-581027e2bb4f>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      8\u001b[0m \u001b[0mtotal_sum\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      9\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m300\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 10\u001b[1;33m     \u001b[0mdf\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mget_fundamentals\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mq\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata_pe\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"day\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtolist\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     11\u001b[0m     \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"turnover_ratio\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     12\u001b[0m         \u001b[0mtotal_list\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\jqdatasdk\\utils.py\u001b[0m in \u001b[0;36m_wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m    239\u001b[0m             \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"run jqdatasdk.auth first\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    240\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 241\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    242\u001b[0m     \u001b[1;32mreturn\u001b[0m \u001b[0m_wrapper\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    243\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\jqdatasdk\\api.py\u001b[0m in \u001b[0;36mget_fundamentals\u001b[1;34m(query_object, date, statDate)\u001b[0m\n\u001b[0;32m     87\u001b[0m         \u001b[1;34m\"\"\" 当天的数据可能变化,不用缓存 \"\"\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     88\u001b[0m         \u001b[1;32mreturn\u001b[0m \u001b[0mJQDataClient\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_fundamentals\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msql\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msql\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 89\u001b[1;33m     \u001b[1;32mreturn\u001b[0m \u001b[0mexec_fundamentals\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msql\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     90\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     91\u001b[0m \u001b[1;33m@\u001b[0m\u001b[0mhashable_lru\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmaxsize\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\jqdatasdk\\utils.py\u001b[0m in \u001b[0;36mhashable_cached_func\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m    275\u001b[0m                 \u001b[1;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mv\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    276\u001b[0m             }\n\u001b[1;32m--> 277\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mcopy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdeepcopy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcached_func\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0m_args\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0m_kwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    278\u001b[0m         \u001b[0mhashable_cached_func\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcache_info\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcached_func\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcache_info\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    279\u001b[0m         \u001b[0mhashable_cached_func\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcache_clear\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcached_func\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcache_clear\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\jqdatasdk\\utils.py\u001b[0m in \u001b[0;36mfunc_with_serialized_params\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m    259\u001b[0m             \u001b[0m_args\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtuple\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mdeserialize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0marg\u001b[0m \u001b[1;32min\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    260\u001b[0m             \u001b[0m_kwargs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m{\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mdeserialize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mv\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mv\u001b[0m \u001b[1;32min\u001b[0m \u001b[0msix\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mviewitems\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 261\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0m_args\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0m_kwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    262\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    263\u001b[0m         \u001b[0mcached_func\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcache\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfunc_with_serialized_params\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\jqdatasdk\\api.py\u001b[0m in \u001b[0;36mexec_fundamentals\u001b[1;34m(sql)\u001b[0m\n\u001b[0;32m     91\u001b[0m \u001b[1;33m@\u001b[0m\u001b[0mhashable_lru\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmaxsize\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     92\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mexec_fundamentals\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msql\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 93\u001b[1;33m     \u001b[1;32mreturn\u001b[0m \u001b[0mJQDataClient\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_fundamentals\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msql\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msql\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     94\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     95\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\jqdatasdk\\client.py\u001b[0m in \u001b[0;36m<lambda>\u001b[1;34m(**kwargs)\u001b[0m\n\u001b[0;32m    219\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    220\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__getattr__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 221\u001b[1;33m         \u001b[1;32mreturn\u001b[0m \u001b[1;32mlambda\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    222\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    223\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mget_data_api_url\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\jqdatasdk\\client.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self, method, **kwargs)\u001b[0m\n\u001b[0;32m    214\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    215\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0merr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mException\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 216\u001b[1;33m                 \u001b[1;32mraise\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    217\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    218\u001b[0m         \u001b[1;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\jqdatasdk\\client.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self, method, **kwargs)\u001b[0m\n\u001b[0;32m    181\u001b[0m             \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    182\u001b[0m                 \u001b[0mfile\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msix\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mBytesIO\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 183\u001b[1;33m                 \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mensure_auth\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    184\u001b[0m                 \u001b[0mresponse\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mclient\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mquery\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mrequest\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    185\u001b[0m                 \u001b[1;32mif\u001b[0m \u001b[0mresponse\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstatus\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\jqdatasdk\\client.py\u001b[0m in \u001b[0;36mensure_auth\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m    121\u001b[0m                 \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mhost\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    122\u001b[0m                 \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mport\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 123\u001b[1;33m                 \u001b[0mtimeout\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrequest_timeout\u001b[0m \u001b[1;33m*\u001b[0m \u001b[1;36m1000\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    124\u001b[0m             )\n\u001b[0;32m    125\u001b[0m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minited\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\thriftpy2\\rpc.py\u001b[0m in \u001b[0;36mmake_client\u001b[1;34m(service, host, port, unix_socket, proto_factory, trans_factory, timeout, cafile, ssl_context, certfile, keyfile, url, socket_family)\u001b[0m\n\u001b[0;32m     54\u001b[0m     \u001b[0mtransport\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtrans_factory\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_transport\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msocket\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     55\u001b[0m     \u001b[0mprotocol\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mproto_factory\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_protocol\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtransport\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 56\u001b[1;33m     \u001b[0mtransport\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     57\u001b[0m     \u001b[1;32mreturn\u001b[0m \u001b[0mTClient\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mservice\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mprotocol\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     58\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\thriftpy2\\transport\\buffered\\__init__.py\u001b[0m in \u001b[0;36mopen\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m     27\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     28\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 29\u001b[1;33m         \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_trans\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     30\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     31\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mclose\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda\\anaconda\\lib\\site-packages\\thriftpy2\\transport\\socket.py\u001b[0m in \u001b[0;36mopen\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m    103\u001b[0m             raise TTransportException(\n\u001b[0;32m    104\u001b[0m                 \u001b[0mtype\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mTTransportException\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mNOT_OPEN\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 105\u001b[1;33m                 message=\"Could not connect to %s\" % str(addr))\n\u001b[0m\u001b[0;32m    106\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    107\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mread\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msz\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mTTransportException\u001b[0m: TTransportException(type=1, message=\"Could not connect to ('39.107.190.114', 7000)\")"
     ]
    }
   ],
   "source": [
    "# 计算成交量\n",
    "# q = query(\n",
    "#     valuation\n",
    "# ).filter(\n",
    "#     valuation.code.in_ (list(data_index)) \n",
    "# )\n",
    "\n",
    "total_sum = []\n",
    "for i in range(1000):\n",
    "    df = get_fundamentals(q, data_pe[\"day\"].tolist()[i])\n",
    "    for i in range(len(df[\"turnover_ratio\"])):\n",
    "        total_list = []\n",
    "        total_list.append(df[\"turnover_ratio\"][i] * df[\"capitalization\"][i])\n",
    "    total_sum.append(get_median(total_list))\n",
    "\n",
    "total_sum"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0       3.364416e+04\n",
       "1       5.757321e+04\n",
       "2       4.699700e+04\n",
       "3       5.254299e+04\n",
       "4       5.278066e+04\n",
       "            ...     \n",
       "4129    3.499830e+07\n",
       "4130    2.500110e+07\n",
       "4131    1.828024e+06\n",
       "4132    3.564062e+07\n",
       "4133    1.256198e+05\n",
       "Name: capitalization, Length: 4134, dtype: float64"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# df[\"capitalization\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pe</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2016-11-23</th>\n",
       "      <td>55.11040</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-11-24</th>\n",
       "      <td>54.54290</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-11-25</th>\n",
       "      <td>54.40655</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-11-28</th>\n",
       "      <td>54.34585</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-11-29</th>\n",
       "      <td>54.02160</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-23</th>\n",
       "      <td>29.65510</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-24</th>\n",
       "      <td>28.91710</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-25</th>\n",
       "      <td>29.15330</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-28</th>\n",
       "      <td>28.80110</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-29</th>\n",
       "      <td>28.88325</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 1 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                  pe\n",
       "2016-11-23  55.11040\n",
       "2016-11-24  54.54290\n",
       "2016-11-25  54.40655\n",
       "2016-11-28  54.34585\n",
       "2016-11-29  54.02160\n",
       "...              ...\n",
       "2020-12-23  29.65510\n",
       "2020-12-24  28.91710\n",
       "2020-12-25  29.15330\n",
       "2020-12-28  28.80110\n",
       "2020-12-29  28.88325\n",
       "\n",
       "[1000 rows x 1 columns]"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 数据转换\n",
    "pe_d = { \"pe\":pe_list}\n",
    "pe_data = pd.DataFrame(data=pe_d,index= time)\n",
    "pe_data\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>total_sum</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2016-11-23</th>\n",
       "      <td>4686742.056</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-11-24</th>\n",
       "      <td>4686742.056</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-11-25</th>\n",
       "      <td>4686742.056</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-11-28</th>\n",
       "      <td>4686742.056</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-11-29</th>\n",
       "      <td>4686742.056</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-23</th>\n",
       "      <td>4686742.056</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-24</th>\n",
       "      <td>4686742.056</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-25</th>\n",
       "      <td>4686742.056</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-28</th>\n",
       "      <td>4686742.056</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-29</th>\n",
       "      <td>4686742.056</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 1 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "              total_sum\n",
       "2016-11-23  4686742.056\n",
       "2016-11-24  4686742.056\n",
       "2016-11-25  4686742.056\n",
       "2016-11-28  4686742.056\n",
       "2016-11-29  4686742.056\n",
       "...                 ...\n",
       "2020-12-23  4686742.056\n",
       "2020-12-24  4686742.056\n",
       "2020-12-25  4686742.056\n",
       "2020-12-28  4686742.056\n",
       "2020-12-29  4686742.056\n",
       "\n",
       "[1000 rows x 1 columns]"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 数据转换\n",
    "total_sum_t = { \"total_sum\":total_sum}\n",
    "total_data = pd.DataFrame(data=total_sum_t,index= time)\n",
    "total_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = pd.DatetimeIndex(data_pe[\"day\"].tolist())\n",
    "y = pe_data\n",
    "y2 = total_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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7/O6qQ9kd/19mHfv3s3f/vY3br/9dqy1rFixggcffJAzzjgj/QFtb2+nrKyM9evXc+TIEWpqati3bx/BYBC3243jOAC4XMrhRUQmmh07PkVbW89EajhKSlawePHtAx534403csUVV/CrX/2K1157Lf06U0VFBStXrgRg+/btbNq0ifLychobGzn11FP5yU9+AsAPfvADLrroIm6//XYeeeSR9Fi5//7v/8ZxHH73u99x+PBhWltb+eEPf8jb3/52Vq5cyT333MOuXbtYvXo1tbW1PPXUU8ydO3dEfx5jVf6Tu099CnrJ4odlxQq4feAP39VXX82uXbvSyduuXbvYsmULkyZNIhwOc+mll/Lkk0/yhz/8gfXr13PbbbcBcO2113LmmWdy5ZVXphMtt9vNP//zP7Ns2bKse2zdujUrgVu6dCmzZs0C4M0338Tn8/HLX/6SUChESUkJjz32GAC33347F154Ib/97W/5+c9/nv4wn3vuuVhruf3226msrKS+vp477riDFStW8Ja3vIU77riDnTt3smbNGnbu3MlDDz3E6tWrh/kDFRERGbrGxka+/e1v99rrNWfOnHRX7PXXX89ll13GWWedxbp16/j9738PwJNPPsmTTz7JJZdcwtVXX83ixYt597vfDcDnPvc5brzxRioqKmhqamLXrl18+tOfpra2lvb2dp588kn++te/Ul1dzfbt2ydMYgdjIbnLI5fLxU9/+lOWLFkCwI9+9CNmz57NCSecwEsvvcS0adP4zne+wx/+8AfuvPPO9HmXXHIJ3/ve99iwYQM/+tGPuPfee7n//vspLy/n4MGDPe5zxRVX8IlPfILzzz8fr9eb/jDfdtttTJ8+nSuuuIK9e/dy/fXXA4lvML/+9a/5+Mc/zuWXX47H4+HSSy8F4Jvf/CaXXXYZCxYsoKamhr179/LZz36W7du3U1NTw8svv8w3vvENFi1axF133aXETkRkghpMhS1XvvGNb3D33XczZ84cPvnJT/KNb3wjPQzpb3/7G263e1C9Sg8//DA33ngjkFh0+KabbuLcc88lFArx8MMPp4susViMO++8k1tuuYWbbrqJ119/nVdffZUXXniBcDjMggULcvdmx6D8J3eDqLDlijGGyy+/HGstp5xyCu9617vYvXs3zz33HIsWLSIWi+H1ennkkUc466yz2LhxIx6Ph898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\n",
      "text/plain": [
       "<Figure size 720x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig,ax = plt.subplots(1,1,figsize=(10,8))\n",
    "ax.plot(x,y,color = \"y\",label = 'PE中位数')\n",
    "plt.legend(loc=1)\n",
    "plt.title('PE走势图')\n",
    "\n",
    "ax1 = ax.twinx()\n",
    "ax1.plot(x,y2,color = \"r\",label = \"成交量中位数\")\n",
    "plt.legend(loc=2)\n",
    "\n",
    "plt.rcParams['font.sans-serif']=['SimHei'] #显示中文标签\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "# def roe_select(codes):\n",
    "#     \"\"\"\n",
    "#     最近10年平均ROE大于20%，并且每年ROE大于15%。\n",
    "#     净资产收益率ROE(%)=归属于母公司股东的净利润*2/（期初归属于母公司股东的净资产+期末归属于母公司股东的净资产）\n",
    "#     \"\"\"\n",
    "#     # 找出已经上市十年了的代码\n",
    "#     ten_year_codes = []\n",
    "#     df = finance.run_query(query(finance.STK_LIST.code, finance.STK_LIST.start_date).filter(\n",
    "#         finance.STK_LIST.code.in_(codes)))\n",
    "#     for row in df.itertuples():\n",
    "#         if getattr(row, 'start_date').year <= this_year - 10:\n",
    "#             ten_year_codes.append(getattr(row, 'code'))\n",
    "\n",
    "#     roe_selected = []\n",
    "#     for code in ten_year_codes:\n",
    "#         q = query(\n",
    "#             indicator.statDate, indicator.roe\n",
    "#         ).filter(\n",
    "#             indicator.code == code\n",
    "#         )\n",
    "#         rets = [get_fundamentals(q, statDate=str(i))\n",
    "#                 for i in range(this_year - 10, this_year)]\n",
    "#         df = pd.concat(rets)\n",
    "#         df.set_index('statDate', inplace=True)\n",
    "#         sum = 0\n",
    "#         for row in df.itertuples():\n",
    "#             roe = getattr(row, 'roe')\n",
    "#             if roe < 15:\n",
    "#                 break\n",
    "#             sum += roe\n",
    "#         else:\n",
    "#             if sum/10 > 20:\n",
    "#                 roe_selected.append(code)\n",
    "#     return roe_selected"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
